//package top.xierongsheng.user.controller;
//
//
//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import io.swagger.v3.oas.annotations.Operation;
//import io.swagger.v3.oas.annotations.tags.Tag;
//import lombok.RequiredArgsConstructor;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.validation.annotation.Validated;
//import org.springframework.web.bind.annotation.*;
//import top.xierongsheng.code.R;
//import top.xierongsheng.code.aspect.log.Log;
//import top.xierongsheng.code.aspect.log.LogType;
//import top.xierongsheng.code.aspect.power.RequiresPermissions;
//import top.xierongsheng.user.dto.RoleDto;
//import top.xierongsheng.user.dto.groups.Create;
//import top.xierongsheng.user.dto.groups.Update;
//import top.xierongsheng.user.dto.groups.UpdateStatus;
//import top.xierongsheng.user.model.SYS_ROLE;
//import top.xierongsheng.user.service.IRoleService;
//import top.xierongsheng.utlis.data.RandomUtil;
//
//import java.util.*;
//
//@Slf4j
//@RestController //这意味着这个类是一个控制器
//@RequestMapping(path = "/role") //这意味着URL以/role开头（在应用程序路径之后）
//@RequiredArgsConstructor
//@CrossOrigin
//@Tag(name = "角色接口")
//public class RoleController {
//
//    private final IRoleService roleService;
//
//    /**
//     * 新增角色
//     *
//     * @param userId
//     * @param roleDto
//     * @return
//     * @auther 谢荣生
//     * @datetime 2020/10/20 10:20
//     */
//    @PostMapping(path = "/addRole", consumes = {"application/json", "application/x-www-form-urlencoded"})  //仅映射POST请求
//    @Log(type = LogType.web, desc = "角色表-新增")
//    @RequiresPermissions("addRole")
//    @Operation(summary = "新增角色")
//    public R addRole(@RequestHeader(name = "userId") String userId, @RequestBody @Validated(Create.class) RoleDto roleDto) {
//        SYS_ROLE role = new SYS_ROLE();
//        role.setId(RandomUtil.getUUID());
//        role.setName(roleDto.getName());
//        role.setRoleName(roleDto.getRoleName());
//        role.setDescription(roleDto.getDescription());
//        role.setStatus(1);
//        role.setCreatorId(userId);
//        role.setCreateTime(new Date());
//        role.setUpdateId(userId);
//        role.setUpdateTime(new Date());
//        roleService.save(role);
//        return R.ok("新增角色成功");
//    }
//
//
//    /**
//     * 更新角色
//     *
//     * @param userId
//     * @param roleDto
//     * @return
//     * @auther 谢荣生
//     * @datetime 2020/10/20 10:20
//     */
//    @PostMapping(path = "/updateRole", consumes = {"application/json", "application/x-www-form-urlencoded"})
//    @Log(type = LogType.web, desc = "角色表-更新")
//    @RequiresPermissions("editRole")
//    @Operation(summary = "更新角色")
//    public R updateRole(@RequestHeader(name = "userId") String userId, @RequestBody @Validated(Update.class) RoleDto roleDto) {
//        SYS_ROLE role = roleService.getById(roleDto.getId());
//        if (role == null) {
//            return R.fail("角色不存在");
//        } else {
//            role.setName(roleDto.getName());
//            role.setRoleName(roleDto.getRoleName());
//            role.setDescription(roleDto.getDescription());
//            role.setStatus(roleDto.getStatus());
//            role.setUpdateId(userId);
//            role.setUpdateTime(new Date());
//            roleService.updateById(role);
//            return R.ok("更新角色信息成功");
//        }
//    }
//
//    /**
//     * 批量 启用 禁用 角色
//     *
//     * @param userId
//     * @param roleDto
//     * @return
//     * @auther 谢荣生
//     * @datetime 2020/10/20 10:20
//     */
//    @PostMapping(path = "/disableAndEnableByIds", consumes = {"application/json", "application/x-www-form-urlencoded"})
//    @Log(type = LogType.web, desc = "角色表-状态更新")
//    @RequiresPermissions("editRoleStatus")
//    @Operation(summary = "角色状态更新")
//    public R disableAndEnableByIds(@RequestHeader(name = "userId") String userId, @RequestBody @Validated(UpdateStatus.class) RoleDto roleDto) {
//        List<String> ids = Arrays.asList(roleDto.getId().split(","));
//        List<String> errMap = new ArrayList<String>();
//        for (String id : ids) {
//            SYS_ROLE sysRole = roleService.getById(id);
//            if(sysRole == null){
//                errMap.add("[" + id + "]该角色不存在");
//                continue;
//            }
//            sysRole.setUpdateId(userId);
//            sysRole.setUpdateTime(new Date());
//            sysRole.setStatus(roleDto.getStatus());
//            roleService.updateById(sysRole);
//        }
//        if (errMap.size() > 0) {
//            return R.fail("角色状态更新失败").zip("data", errMap);
//        } else {
//            return R.ok("角色状态更新成功");
//        }
//    }
//
//    /**
//     * 分页获取角色列表
//     *
//     * @param userId   用户id
//     * @param pageNo   页码
//     * @param pageSize 分页条数
//     * @param name     角色名称（模糊查询）
//     * @return
//     * @auther 谢荣生
//     * @datetime 2020/10/20 10:21
//     */
//    @GetMapping(path = "/getRoleAllPage")
//    @RequiresPermissions("searchRole")
//    @Operation(summary = "分页获取角色列表")
//    public
//    R getRoleAllPage(@RequestHeader(name = "userId") String userId, @RequestParam String name, @RequestParam(defaultValue = "1") Integer pageNo, @RequestParam(defaultValue = "10") Integer pageSize) {
//        Page<SYS_ROLE> page = roleService.page(new Page<>(pageNo, pageSize), new QueryWrapper<SYS_ROLE>().lambda().like(SYS_ROLE::getName, name));
//        List<SYS_ROLE> roleIPage = page.getRecords();
//        Map baseReturn = new HashMap();
//        baseReturn.put("pageNo", pageNo);
//        baseReturn.put("pageSize", pageSize);
//        baseReturn.put("total", page.getTotal());
//        baseReturn.put("list", roleIPage);
//        return R.ok().zip("data", baseReturn);
//    }
//
//    /**
//     * 根据角色id获取角色信息
//     *
//     * @param userId
//     * @param id
//     * @return
//     * @auther 谢荣生
//     * @datetime 2020/10/20 10:24
//     */
//    @GetMapping(path = "/getRoleInfoById")
//    @Operation(summary = "根据角色id获取角色信息")
//    public
//    R getRoleInfoById(@RequestHeader(name = "userId") String userId, @RequestParam String id) {
//        if (id == null || id.trim().isEmpty()) {
//            return R.fail("id不允许为空");
//        }
//        SYS_ROLE role = roleService.getById(id);
//        if (role == null) {
//            return R.fail("角色不存在");
//        } else {
//            return R.ok("获取角色信息成功").zip("data", role);
//        }
//    }
//
//
//    /**
//     * 获取所有已启用角色
//     *
//     * @param userId
//     * @return
//     * @auther 谢荣生
//     * @datetime 2020/11/9 10:14
//     */
//    @GetMapping(path = "getRoleListAll")
//    @Operation(summary = "获取所有已启用角色")
//    public
//    R getRoleListAll(@RequestHeader(name = "userId") String userId) {
//        List<SYS_ROLE> sysRoleList = roleService.list(new QueryWrapper<SYS_ROLE>().lambda().eq(SYS_ROLE::getStatus,1));
//        return R.ok().zip("data", sysRoleList);
//    }
//}
